package main

import "fmt"

type Obj interface {
	SendMsg(msg string)
	RevMsg(msg string)
}

type Mediator interface {
	SendMsg(msg string, user Obj)
}

type User struct {
	Name     string
	mediator Mediator
}

func (u *User) SendMsg(msg string) {
	fmt.Printf("用户 %s 发送消息 %s\n", u.Name, msg)
	u.mediator.SendMsg(msg, u)
}
func (u *User) RevMsg(msg string) {
	fmt.Printf("用户 %s 接收到消息 %s\n", u.Name, msg)
}

type ChatRoom struct {
	users []User
}

func (cr ChatRoom) SendMsg(msg string, user Obj) {
	user.RevMsg(msg)
}
func main() {

}
